package com.ruoyi.gateway.config;

import com.ruoyi.gateway.handler.ValidateCodeHandler;
import javax.annotation.Resource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.web.reactive.function.server.RequestPredicates;
import org.springframework.web.reactive.function.server.RouterFunction;
import org.springframework.web.reactive.function.server.RouterFunctions;

/**
 * 这个配置类的主要用途是设置一个路由规则，当应用收到一个GET请求，路径为"/code"且接受类型为纯文本时，会将该请求交给validateCodeHandler处理。这通常用于生成或验证验证码的场景。
 * 这是基于Spring WebFlux的响应式编程模型，而不是传统的Spring MVC。 路由配置信息
 *
 * @author ruoyi
 */
@Configuration
public class RouterFunctionConfiguration {

  @Resource
  private ValidateCodeHandler validateCodeHandler;

    @SuppressWarnings("rawtypes")
    @Bean
    public RouterFunction routerFunction()
    {
        return RouterFunctions.route(
                RequestPredicates.GET("/code").and(RequestPredicates.accept(MediaType.TEXT_PLAIN)),
                validateCodeHandler);
    }
}
